- 마이크로서비스는 분산 데이터베이스를 권장
- 도메인 모델에 근거해 데이터 분석
- 서비스와 데이터베이스는 일대일 대응
- 레포지토리
- 디비 접속을 담당하는 서비스
- 이외의 서비스는 레포지토리를 경유
- 약한 결합을 위해 이러한 구조를 채택
- 서비스뿐만 아니라 디비에도 적용
- 과제
- 데이터베이스 배치 패턴
- 서비스별 데이터베이스
- 약한 결합
- 레포지토리 서비스와 디비의 일대일 대응 관계
- 장점
- 유연하고 빠른 애플리케이션 변경
- 요건에 맞는 최적의 데이터베이스 제품 및 기술 선택
- 고려 사항
- 공유 데이터베이스
- 결과적 일관성을 허용하지 않을 경우
- 일관성을 유지하기 위해 디비 분산화를 포기하는 경우
- 기존 시스템을 유지하면서 마이그레이션이 어려운 상황
- 하나의 디비를 각종 서비스가 공유
- 디비 설계 변경은 모든 서비스에 영향을 줌
- 데이터 변경이 비관적 락을 걸고 처리
- 데이터의 양 증가에 따라 디비를 스케일 업 해야만 함
- 데이터베이스 동기화 패턴
- Saga
- 로컬 트랜잭션과 보상 트랜잭션 사용
- 기법
- 코레오그래피(choreography)
- 디비 접속 서비스가 각각 메시징 제품을 통해 데이터 동기화
- 각 서비스는 사가 성립을 위한 추가 제어 로직 구현
- 간단한 구조
- 전체를 파악, 추적하기 어려움
- 비즈니스 로직이 구현될 서비스 안에 사가 제어 로직까지 포함되어 관심사의 분리 저해
- 오케스트레이션
- 사가 오케스트레이터라는 서비스가 트랜잭션 처리 조율
- 요청/응답&비동기 메시지를 통해 도메인 계증 서비스에 데이터 처리 요청
- 장애 시에는 오케스트레이터가 감지하고 보상 트랜잭션 수행
- 비즈니스 로직과 데이터 처리의 분리로 역할 분리
- 서비스 흐름 제어가 오케스트레이터 내부에 구현되어 연계 흐름 파악 용이